package main

import (
	"fmt"
	"sync"
	"time"
)

var wg sync.WaitGroup

// 写
func writeData(intChan chan int) {
	defer wg.Done()
	for i := 0; i < 50; i++ {
		intChan <- i
		fmt.Println("写入的数据:", i)
		time.Sleep(time.Second)
	}
	close(intChan)
}

// 读
func readData(intChan chan int) {
	wg.Done()
	// 遍历
	for v := range intChan {
		fmt.Println("读取的数据:", v)
		time.Sleep(time.Second)
	}
}
func main() {
	// 写协程和读协程共同操作同一个管道

	// 定义管道
	ichan := make(chan int, 50)
	// 开启读和写的协程
	wg.Add(2)
	go writeData(ichan)
	go readData(ichan)
	wg.Wait()
}
